home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Report Writers / Crystal Repot 9.0 Full CD version / Setup.exe / ProgramF / CRYSTAL / CRW9 / DEV / INCLUDE / Ufjob.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-27  |  1.5 KB  |  84 lines

  1. /*
  2. ** File:    UFJob.c
  3. ** Author:  Rick Cameron
  4. ** Date:    13 Mar 93
  5. **
  6. ** Purpose: Implementation of functions to support job management.
  7. */
  8.  
  9. #include <Windows.h>
  10. #include "UFDll.h"
  11. #include "UFMain.h"
  12. #include "UFUser.h"
  13. #include "UFJob.h"
  14.  
  15. #include <StdLib.h>
  16.  
  17. static struct JobInfo FAR *Root = 0;
  18.  
  19. void InitForJob (UFTInt32u jobId)
  20. {
  21.     struct JobInfo FAR *jobInfo;
  22.  
  23.     jobInfo = FindJobInfo (jobId);
  24.  
  25.     if (jobInfo == 0)
  26.     {
  27.         jobInfo = malloc (sizeof (struct JobInfo));
  28.  
  29.         if (jobInfo != 0)
  30.         {
  31.             jobInfo->jobId = jobId;
  32.             jobInfo->data  = 0;
  33.  
  34.             jobInfo->prev = 0;
  35.             jobInfo->next = Root;
  36.  
  37.             if (Root != 0)
  38.                 Root->prev = jobInfo;
  39.  
  40.             Root = jobInfo;
  41.  
  42.             InitJob (jobInfo);
  43.         }
  44.     }
  45. }
  46.  
  47. void TermForJob (UFTInt32u jobId)
  48. {
  49.     struct JobInfo FAR *jobInfo;
  50.  
  51.     jobInfo = FindJobInfo (jobId);
  52.  
  53.     if (jobInfo != 0)
  54.     {
  55.         TermJob (jobInfo);
  56.  
  57.         if (jobInfo->prev != 0)
  58.             jobInfo->prev->next = jobInfo->next;
  59.         else
  60.             Root = jobInfo->next;
  61.  
  62.         if (jobInfo->next != 0)
  63.             jobInfo->next->prev = jobInfo->prev;
  64.  
  65.         free (jobInfo);
  66.     }
  67. }
  68.  
  69. struct JobInfo FAR *FindJobInfo (UFTInt32u jobId)
  70. {
  71.     struct JobInfo FAR *cursor = Root;
  72.  
  73.     while (cursor != 0)
  74.     {
  75.         if (cursor->jobId == jobId)
  76.             break;
  77.  
  78.         cursor = cursor->next;
  79.     }
  80.  
  81.     return cursor;
  82. }
  83.  
  84.